Aiven と AWS をピアリングしてデータベースにアクセスする
ウィスキー、シガー、パイプをこよなく愛する大栗です。
最近マルチクラウドな DBaaS の Aiven を触っています。今日は Aiven を AWS 上にデプロイして自分の VPC とピアリングします。
ちなみに Aiven と Google Cloud とピアリングするには昨日書いた以下の記事を参照してください。
ネットワークの構成
Aiven と AWS をピアリングするれば、インターネットを経由せずに直接通信することができます。Aiven の VPC を AWS に作成して、自分の VPC とピアリングします。
やってみる
以下の手順でサービスを構築します。
- Aiven の VPC を作成する
- Aiven 側のピアリングを作成する
- AWS 側のピアリングを作成する
- Aiven サービスを作成する
- サービスにアクセスしてみる
1. Aiven の VPC を作成する
まずは Aiven 側の VPC を作成します。
メニューから VPC に入り、対象のクラウド(ここでは AWS)と IP のレンジを決めます。ここでは東京リージョンに置くので Cloud
で Amazon Web Services
の ap-northeast-1
を選択します。Aiven 側で使用する IP range
は 10.0.1.0/24 としました。使用している AWS の VPC と衝突しない CIDR を設定しましょう。
このように Aiven の VPC が作成されます
2. Aiven 側のピアリングを作成する
作成した Aiven の VPC (ここでは aws-ap-northeast-1) を選択します。
AWS Account ID に AWS のアカウント ID を入力して、 AWS VPC ID に VPC ID を入力します。そして 対象の VPC のリージョンも設定しましょう。そして、Add peering connection をクリックします。ちなみに Transit Gateway とつなげることも可能です。
少しするとピアリングの State が Pending peer
になります。カーソルを当てると、ピアリングのリクエストの受け入れ要求とルーティングの設定について記載されています。ピアリングの要求元のアカウント ID と VPC ID を覚えておいてください。
3. AWS 側のピアリングを作成する
次に AWS 側のピアリングの設定を行います。
AWS のマネージメントコンソールで、VPC の ピアリング接続
を開きます。Aiven とのピアリングをアカウント ID と VPC ID で確認します。ピアリングを選択して アクション
から リクエストの承諾
をクリックします。
リクエスタとアクセプタの内容を確認して リクエストを許諾
をクリックします。
ピアリングがアクティブになります。
次に Aiven とのピアリングへのルーティングの設定を行います。左のメニューから ルートテーブル
を選択します。ピアリングしている VPC のルートテーブルを選択して下のタブの ルート
を選択して ルートを編集
をクリックします。
まず ルートを追加
をクリックして行を増やします。Aiven 側の VPC の CIDR を 送信先
に入力して、ターゲット
に先程のピアリングを設定して 変更を保存
をクリックします。
これでネットワーク関連の設定が終わりました。
4. Aiven サービスを作成する
ネットワーク設定が終わったので、いよいよ Aiven のサービスを作成します。
Aiven のコンソールで Service
を開き、Create a new service
をクリックします。
ここでは PostgreSQL を選択します。現時点のデフォルトのバージョンは 13 になっています。
クラウドプロバイダーで AWS を選択します。リージョンを選択しますが注意してください。配置するリージョンを選択せずに VPC
から 作成した VPC を選択してください。
サービスのプランを選択します。ここでは Startup で一番小さい Startup-4
を選択しました。本番用途など高い可用性が必要な場合は、Business や Premium のプランを選択しましょう。
ディスクは標準で 80 GB 設定されているため追加しません。必要に応じて増やしましょう。判別しやすいようにサービスの名前を設定しましょう。そして Create Service
をクリックして、サービスを作成します。
しばらくすると Running
になります。
5. サービスにアクセスしてみる
EC2 から AWS から Aiven のサービスにアクセスしてみます。ピアリングしている VPC に EC2 を起動してログインしましょう。ここでは Amazon Linux 2 を想定します。
まずは PostgreSQL クライアントをインストールします。
$ sudo yum install postgresql -y
Aiven のサービスの詳細を確認します。この情報を元に DB へアクセスします。
Aiven の PostgreSQL にアクセスします。
$ psql -h pg-xxxxxx-xxxxxx.aivencloud.com -p 21374 -U avnadmin -d defaultdb Password for user avnadmin: psql (9.2.24, server 13.5) WARNING: psql version 9.2, server version 13.0. Some psql features might not work. SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256) Type "help" for help. defaultdb=>
クライアントの IP アドレスとサーバーの IP アドレスを確認してみます。プライベート IP でアクセスしています。
defaultdb=> select inet_client_addr(); inet_client_addr ------------------ 10.0.2.60 (1 row) defaultdb=> select inet_server_addr(); inet_server_addr ------------------ 10.0.1.22 (1 row) defaultdb=> \q
このように AWS からピアリング経由で Aiven のデータベースにアクセスできました。
さいごに
Aiven はマルチクラウド環境で利用できる DBaaS です。前回は Google Cloud へデプロイしましたが、今回のように AWS へデプロイする場合も同じ手順で Aiven を利用できます。マルチクラウド環境や特定クラウドへの依存を減らしながらシステムを構築、運用する場合に利用を検討してみてはいかがでしょうか?